﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SgArchiveCommons
{
    public class SGText
    {
        /// <summary>
        /// 获得MD5加密字符串
        /// </summary>
        /// <param name="s">源字符串</param>
        /// <returns>目标字符串</returns>
        public static string MD5(string s)
        {
            char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
            try
            {
                byte[] btInput = System.Text.Encoding.UTF8.GetBytes(s);
                // 获得MD5摘要算法的 MessageDigest 对象
                var mdInst = System.Security.Cryptography.MD5.Create();
                // 使用指定的字节更新摘要
                mdInst.ComputeHash(btInput);
                // 获得密文
                byte[] md = mdInst.Hash;
                // 把密文转换成十六进制的字符串形式
                int j = md.Length;
                char[] str = new char[j * 2];
                int k = 0;
                for (int i = 0; i < j; i++)
                {
                    byte byte0 = md[i];
                    str[k++] = hexDigits[(int)(((byte)byte0) >> 4) & 0xf];
                    str[k++] = hexDigits[byte0 & 0xf];
                }
                return new string(str);
            }
            catch
            {
                // Console.Error.WriteLine(e.StackTrace);
                return null;
            }
        }
    }
}
